Перейти к основному содержимому

Чек-лист самопроверки

Разработчику Архитектору

Чек-лист самопроверки

  1. Что такое Rust и для каких задач он предназначен?
  2. Какие три главные цели Rust: безопасность, скорость, параллелизм?
  3. Что такое Cargo и зачем он нужен?
  4. Как создать новый проект с помощью cargo new?
  5. Что такое крейт (crate) и какие виды бывают (binary, library)?
  6. Какие примитивные типы данных есть в Rust (i32, f64, bool, char, str)?
  7. В чём разница между String и &str?
  8. Как объявляются переменные и почему они неизменяемы по умолчанию?
  9. Что такое владение (ownership) и какие три правила оно включает?
  10. Что происходит при передаче значения в функцию — копирование или перемещение?
  11. Какие типы реализуют трейт Copy?
  12. Что такое заимствование (&T, &mut T)?
  13. Какие правила заимствования существуют?
  14. Что такое время жизни ('a) и зачем оно нужно?
  15. Как аннотировать время жизни в функциях?
  16. Что такое структуры (struct) и как их объявлять?
  17. Как реализуются методы у структур (impl)?
  18. Что такое перечисления (enum) и как они используются?
  19. Как работает сопоставление с образцом (match)?
  20. Почему match должен быть исчерпывающим?
  21. Что такое Option и как он заменяет null?
  22. Что такое Result и как он используется для обработки ошибок?
  23. Как работают операторы ? и unwrap()?
  24. Что такое трейты (traits) и зачем они нужны?
  25. Как реализовать трейт для типа?
  26. Что такое обобщения (generics) и как они записываются?
  27. Как ограничить обобщённые типы с помощью трейтов (where)?
  28. Что такое макросы и чем они отличаются от функций?
  29. Как использовать макросы (println!, vec!)?
  30. Как определить собственный макрос (macro_rules!)?
  31. Как работают коллекции (Vec, HashMap, HashSet)?
  32. Как итерироваться по коллекциям (iter(), into_iter(), iter_mut())?
  33. Что такое замыкания (|x| x + 1) и как они захватывают переменные?
  34. Какие есть способы захвата в замыканиях (Fn, FnMut, FnOnce)?
  35. Как работает обработка ошибок без исключений?
  36. Что такое паника (panic!) и когда её использовать?
  37. Как писать unit-тесты и интеграционные тесты?
  38. Как запустить тесты с помощью Cargo?
  39. Что такое асинхронность в Rust (async fn, .await)?
  40. Какие асинхронные среды выполнения существуют (tokio, async-std)?
  41. Как работает работа с файлами (std::fs, File::open)?
  42. Как отправлять HTTP-запросы (reqwest, hyper)?
  43. Как сериализовать данные (serde, serde_json)?
  44. Что такое unsafe-блок и когда его можно использовать?
  45. Какие гарантии даёт Rust даже в unsafe-коде?
  46. Как кросскомпилировать Rust-приложение под другую платформу?
  47. Как работает документация через /// и cargo doc?
  48. Что такое модули (mod) и как организована видимость (pub)?
  49. Как использовать внешние зависимости из crates.io?
  50. Какие инструменты входят в Rust Toolchain (rustc, cargo, rustfmt, clippy, rust-analyzer)?

Освоение главы0%